package com.heima.a07_demo.server.mapper;

import com.heima.a07_demo.pojo.entity.DiagnosisRecord;
import com.heima.a07_demo.pojo.entity.Patient;
import com.heima.a07_demo.pojo.vo.PatientVO;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface PatientMapper {
    /*根据id查询患者信息
    * */
    @Select("select * from patient where patient_id=#{patientId}")
    Patient getById(Long patientId);



    void save(Patient patient);



    /**
     * 新增患者记录，使用 useGeneratedKeys 自动回填 patientId
     * @param patient
     * @return 影响的行数
     */
    int insertPatient(Patient patient);

    /**
     * 分页查询历史诊断记录
     *
     * @param name     患者姓名（模糊查询，可选）
     * @param offset   分页起始位置
     * @param pageSize 每页记录数
     * @return 诊断记录列表
     */
    List<DiagnosisRecord> selectPageHistory(@Param("name") String name,
                                             @Param("offset") int offset,
                                             @Param("pageSize") int pageSize);

    /**
     * 历史查询符合条件的记录总数
     *
     * @param name 患者姓名（模糊查询，可选）
     * @return 总记录数
     */
    int countPageHistory(@Param("name") String name);

    /**
     * 分页查询患者诊断记录
     *
     * @param offset   分页起始位置
     * @param pageSize 每页记录数
     * @return 诊断记录列表
     */
    List<DiagnosisRecord> selectPageNow(int offset, Integer pageSize);

    /**
     * 查询患者诊断记录总数
     *
     * @return 总记录数
     */
    int countPageNow();
    /**
     * 根据诊断记录 ID 删除记录
     * @param id 诊断记录 ID
     * @return 受影响的行数
     */
    int deleteById(@Param("id") Long id);

    /**
     * 患者更新
     * @param patient
     */
    @Update("UPDATE test_a07.patient " +
            "SET phone_number = #{phoneNumber}, gender = #{gender}, age = #{age}, name = #{name} " +
            "WHERE patient_id = #{patientId}")
    void updatePatientById(Patient patient);

    @Select("SELECT patient_id FROM patient " +
            "WHERE DATE(create_time) = CURDATE() " +
            "AND (diagnosis_time IS NULL OR final_result = '待诊断')")
    List<Integer> getByIds();
}
